package com.hqyj.lyf.controller;


import com.hqyj.lyf.service.MsmService;
import com.hqyj.lyf.utils.RandomUtil;
import com.hqyj.lyf.utils.ResultInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.xml.transform.Result;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @Author: Chao
 * @description:
 * @Date: 2021/9/1 12:19
 */
@RestController
@RequestMapping("/edumsm/msm")
@CrossOrigin
public class MsmController {
    @Autowired
    private MsmService msmService;

    @Autowired
    private RedisTemplate<String,Object> redis;

    //发送短信验证码(原版)
    @GetMapping("/send")
    public ResultInfo sendMsm(String phone){
        // 从redis获取验证码，如果获取到直接返回
        String code = (String) redis.opsForValue().get(phone);
        if (!StringUtils.isEmpty(code)){
            // 这里直接把验证码从redis获取，然后返回，过期时间内，5分钟
            return new ResultInfo(000,"已经发送过一次了",code);
        }

        // 生成随机值，传递给阿里云发送
        code = RandomUtil.getFourBitRandom();
        Map<String,Object> param = new HashMap<>();
        param.put("code",code);
        ResultInfo resultInfo = msmService.send(param, phone);
        if (resultInfo.getCode() > 0){
            // 发送成功，把验证码放入redis中，设置有效时间
            redis.opsForValue().set(phone,code,5, TimeUnit.MINUTES);// 过期时间5分钟
            return new ResultInfo(200,"发送验证码成功",code);
        }else {
            return resultInfo;
        }
    }
}
